{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import roc_auc_score\n",
    "from sklearn.metrics import accuracy_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = load_breast_cancer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = data.data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = data.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(569, 30)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "lrl1 = LogisticRegression(penalty = \"l1\", solver=\"liblinear\", C=0.5, max_iter=1000)\n",
    "lrl2 = LogisticRegression(penalty = \"l2\", solver=\"liblinear\", C=0.5, max_iter=1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 3.99286446,  0.03171194, -0.13609862, -0.01621505,  0.        ,\n",
       "         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,\n",
       "         0.        ,  0.50511358,  0.        , -0.07127436,  0.        ,\n",
       "         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,\n",
       "         0.        , -0.24559314, -0.12842446, -0.01441491,  0.        ,\n",
       "         0.        , -2.04957707,  0.        ,  0.        ,  0.        ]])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lrl1 = lrl1.fit(x,y)\n",
    "lrl1.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.61520501e+00,  1.03165052e-01,  4.89949805e-02,\n",
       "        -4.54506240e-03, -9.48008257e-02, -3.01421093e-01,\n",
       "        -4.56859957e-01, -2.23258616e-01, -1.36553746e-01,\n",
       "        -1.93906450e-02,  1.51864035e-02,  8.84898752e-01,\n",
       "         1.16165541e-01, -9.44763174e-02, -9.89655585e-03,\n",
       "        -2.29726134e-02, -5.65958341e-02, -2.71050955e-02,\n",
       "        -2.78527986e-02,  3.23035311e-04,  1.25588950e+00,\n",
       "        -3.02228839e-01, -1.72470649e-01, -2.21057137e-02,\n",
       "        -1.74443696e-01, -8.78236006e-01, -1.16396034e+00,\n",
       "        -4.29422377e-01, -4.23200361e-01, -8.69294106e-02]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lrl2 = lrl2.fit(x,y)\n",
    "lrl2.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "l1 = []\n",
    "l2 = []\n",
    "l1test = []\n",
    "l2test = []\n",
    "\n",
    "Xtrain, Xtest, Ytrain, Ytest = train_test_split(x,y,test_size=0.3,random_state=420)\n",
    "\n",
    "for i in np.linspace(0.05,1,19):\n",
    "    lrl1 = LogisticRegression(penalty=\"l1\",solver=\"liblinear\",C=i,max_iter=1000)\n",
    "    lrl2 = LogisticRegression(penalty=\"l2\",solver=\"liblinear\",C=i,max_iter=1000)\n",
    "    lrl1 = lrl1.fit(Xtrain,Ytrain)\n",
    "    l1.append(accuracy_score(lrl1.predict(Xtrain),Ytrain))\n",
    "    l1test.append(accuracy_score(lrl1.predict(Xtest),Ytest))\n",
    "    lrl2 = lrl2.fit(Xtrain,Ytrain)\n",
    "    l2.append(accuracy_score(lrl2.predict(Xtrain),Ytrain))\n",
    "    l2test.append(accuracy_score(lrl2.predict(Xtest),Ytest))\n",
    "    \n",
    "graph = [l1,l2,l1test,l2test]\n",
    "color = [\"green\",\"black\",\"lightgreen\",\"gray\"]\n",
    "label = [\"L1\",\"L2\",\"L1test\",\"L2test\"]\n",
    "\n",
    "plt.figure(figsize=(6,6))\n",
    "for i in range(len(graph)):\n",
    "    plt.plot(np.linspace(0.05,1,19),graph[i],color[i],label=label[i])\n",
    "plt.legend(loc=4) #图例的位置在哪里?4表示,右下角\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
